﻿using System;
using System.Collections.Generic;

namespace Borg.Framework.CompositionBinding
{
    public interface ICompositionControl<T>
    {
        event EventHandler<ItemEventArgs<T>> ComposeItem;
        event EventHandler<ItemEventArgs<T>> DecomposeItem;

        void Add(T item);
        void Clear();
        void Remove(T item);
        void SetComposed(T item);
        void SetDecomposed(T item);

        IEnumerable<T> ComposedItems { get; set; }
        FormatHandler<T> FormatHandler { get; set; }
        IEnumerable<T> Items { get; set; }
    }
}

